package com.bdqn.service;

import com.bdqn.dao.PersonDao;
import com.bdqn.pojo.Person;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * PersonServiceImpl
 *
 * @author LILIBO
 * @since 2021-10-16
 */
@Component("personService")
public class PersonServiceImpl implements PersonService {

    private Logger logger = Logger.getLogger(PersonServiceImpl.class);

    // 定义一个 personDao 属性，这个属性的值将通过Spring框架进行设置
    // @Autowired // Spring的注解，表示自动注入personDao的实例（名字和所定义的属性类型对应）
    @Resource(name="personOracleDao") // Java扩展包的注解，可指定注入Spring的Bean
    private PersonDao personDao;

    /**
     * 默认无参构造函数一定要显示写出来，因为Spring要用
     */
    public PersonServiceImpl() {}

    /**
     * 可通过构造函数注入方式赋值
     *
     * @param personDao
     */
    public PersonServiceImpl(PersonDao personDao) {
        this.personDao = personDao;
    }

    public PersonDao getPersonDao() {
        return personDao;
    }

    /**
     * setPersonDao --> personDao
     * @param personDao
     */
    public void setPersonDao(PersonDao personDao) {
        this.personDao = personDao;
    }

    /**
     * 保存数据
     *
     * @return
     */
    @Override
    public boolean save(Person person) {
        return personDao.save(person);
    }

    /**
     * 修改数据
     *
     * @return
     */
    @Override
    public boolean update(Person person) {
        return personDao.update(person);
    }

    /**
     * 删除数据
     *
     * @return
     */
    @Override
    public boolean delete(Person person) {
        return personDao.delete(person);
    }


    /**
     * 删除数据
     *
     * @return
     */
    @Override
    public void remove(Person person) {
        // int n = 1 / 0; // 除数不能为0（模拟产生一个运行时异常）
        personDao.delete(person);
    }
}
